<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 数据类型的划分
        //     基本数据类型   5种
        //     引用数据类型   Array  object  function  .....

        // 判断数据类型  typeof  可以判断基本数据类型   但是null在判断的时候得到的是 'object'

        // 1 typeof 可以判断函数

        // typeof 在判断对象的时候   都是 object



        // 2 instanceof  判断左边的对象是否在右边的原型链上   只能判断引用数据类型

        //     5种基本类型   
        //          在直接创建的时候  都不是对象
        //           在new出来的时候  是对象
        //     引用数据类型   不管是否使用使用new  都是对象 


        // 3 Object.prototype.toString.call()




        const str = new String('hi');
        const arr = new Array(12, 3, 4);

        console.log(typeof str);   // object


        console.log(str instanceof String);   // true

        console.log(str instanceof Object);   // true


        console.log(1 instanceof Number);   // false

        console.log('hi' instanceof String);   // false


        console.log(arr instanceof Array);   // true



        const a = new Number(1);
        console.log(a);


        console.log(a.constructor === Number);   // true

        const b = 1;
        console.log(b.constructor === Number);   // true



        // null和undefined 是属于特殊的数据，没有构造器






    </script>

</body>

</html>